package com.hyz.yuaiagent.config;

import com.alibaba.cloud.ai.dashscope.api.DashScopeApi;
import com.alibaba.cloud.ai.dashscope.rag.DashScopeDocumentRetriever;
import com.alibaba.cloud.ai.dashscope.rag.DashScopeDocumentRetrieverOptions;
import com.hyz.yuaiagent.constants.TestAPIKey;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.chat.client.advisor.RetrievalAugmentationAdvisor;
import org.springframework.ai.chat.client.advisor.api.Advisor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 03-这是基于阿里云的知识库  也是一个rag只不过有的rag需要做的事情都是 百炼平台中 云实现
 * 所以我们使用多个时候本质是创建RetrievalAugmentationAdvisor拦截器
 * 配置类，用于定义恋爱应用程序中的顾问 bean
 */
@Configuration
@Slf4j
public class LoveAppRAGCloudConfig {

    /**
     * 创建一个顾问 bean，用于恋爱应用程序的云环境
     *
     * @return RetrievalAugmentationAdvisor 类型的顾问
     */
    @Bean
    public Advisor loveAppCloudAdvisor() {
        // 初始化 DashScopeApi 实例，使用测试 API 密钥
        DashScopeApi dashScopeApi = new DashScopeApi(TestAPIKey.ApiKey);
        // 定义 RAG 云索引名称
        final String RagCLoudIndex = "恋爱大师";

        // 创建 DashScopeDocumentRetriever 实例，配置索引名称
        DashScopeDocumentRetriever dashScopeDocumentRetriever = new DashScopeDocumentRetriever(dashScopeApi, DashScopeDocumentRetrieverOptions
                .builder()
                .withIndexName(RagCLoudIndex)
                .build()
        );

        // 构建 RetrievalAugmentationAdvisor 实例，设置文档检索器
        return RetrievalAugmentationAdvisor.builder().documentRetriever(dashScopeDocumentRetriever).build();
    }
}
